1. Technical Field
The present application relates generally to an improved data processing system and method. More specifically, the present application is directed to heterogeneous processing elements.
2. Description of Related Art
Input/output, or I/O, refers to the transfer of data between a processor and a peripheral device in a data processing system. Every transfer is an output from one device and an input to another device. FIG. 1 is a block diagram illustrating a typical multiple processor data processing system. In the depicted example, data processing system 100 has a plurality of processors 102, 104 connected via a symmetric multiprocessing (SMP) bus 120. Memory controller (MC) 132 and input/output channel controller (IOCC) 134 also connect to SMP bus 120
In the example shown in FIG. 1, IOCC 134 connects to a plurality of expansion slots, such as peripheral component interconnect express (PCI Express or PCIe) slots 136. One or more I/O adapter 138 may connect to PCI Express slots 136.
FIG. 2 illustrates a typical software environment for a data processing system, such as data processing system 100 in FIG. 1. A plurality of tasks 1-N 202, 204, 206 run under control of operating system 220. A task 202, 204, 206 may be a process running on a processor, for example. Each task has an assigned address space. For example, operating system 220 assigns task 1 202 an address space 212 that comprises a range of effective addresses, which may also be referred to as virtual addresses. Each task 202, 204, 206 has an address space, or address spaces, from which and to which it may read and write. The operating system 220 translates the effective addresses to real addresses, which may exist in memory or may be expanded to persistent storage using a virtual memory manager.
Each time a task, such as task 2 204, attempts to access an I/O device, such as I/O adapter 138 in FIG. 1, task 204 must make a call to one of libraries 222, 224, 226. There are three main categories of I/O, including classic I/O, storage, and network I/O. Thus, these libraries may include a classic I/O library, a storage library, and a network library, for example. For instance, task 2 204 may access, or “touch,” an I/O adapter by making a call to library 222. Each library may include sub-calls. For example, the network I/O library, such as library 222, may include transmission control protocol/Internet protocol (TCP/IP) calls, user datagram protocol/Internet protocol (UDP/IP) calls, etc.
FIG. 3 illustrates a typical input/output access. A task makes a call to library 310, which accesses device driver 320 for the target I/O device. Device driver 320 then performs I/O reads (RD) and I/O writes (WR) to set up the device. Then, device driver 320 requests an amount of memory, such as 8 kB, from operating system (O/S) 330 to be “pinned” so device driver 320 can read and write into physical memory. O/S 330 then communicates with the central processing unit (CPU) virtual memory manager (VMM) 340 to deallocate the requested amount of memory. The CPU VMM 340 assigns an effective address range to the I/O VMM 345, and the CPU VMM 340 and I/O VMM 345 perform a page out operation 350 to pin the memory to the I/O device.
This typical process is based on a model that has existed for a very long time. Processes running on processors are at the top of the hierarchy, while I/O devices are at the bottom of the hierarchy. Manufacturers of I/O devices accept that I/O devices are second-class citizens, and that a process must go through the conventional process of setting up an I/O device through an O/S library and a device driver to perform I/O reads and writes.
As current trends continue, network I/O and storage I/O in particular are becoming more important than the processing elements. Yet, the model for setting up an I/O device and performing I/O reads and writes remains the same. The existing model is the pervasive world, and manufacturers are left to accept their lot in life.